package com.cmcc.qx.common.dao;

import java.io.Serializable;
import java.util.List;

/**
 * Dao层基类接口，提供基本的增、查、改、删
 * 
 * @author zhangxiaobo
 */
public interface BaseDao {

	/**
	 * 根据主键id查询对象
	 * 
	 * @param clazz
	 * @param id
	 * @return
	 */
	public Object getObj(Class<?> clazz, Serializable id);

	/**
	 * 保存对象
	 * 
	 * @param obj
	 * @return
	 */
	public Serializable save(Object obj);

	/**
	 * 更新对象
	 * 
	 * @param obj
	 */
	public void update(Object obj);

	/**
	 * 删除对象
	 * 
	 * @param obj
	 */
	public void delete(Object obj);

	/**
	 * 根据自定义的hql语句和参数查询
	 * 
	 * @param hql
	 * @param params
	 * @return
	 */
	public List<Object> queryHql(String hql, Object... params);

	/**
	 * 根据自定义的原声sql语句和参数查询
	 * 
	 * @param sql
	 * @param params
	 * @return
	 */
	public List<Object> querySql(String sql, Object... params);
}
